// 1. 基地址 + 最长等待时间
// 2. 请求拦截器 + 响应拦截器

import user from '@/store/modules/user'
import axios, { AxiosError } from 'axios'

export const baseURL = 'http://pcapi-xiaotuxian-front.itheima.net/'
// 备用接口地址1: http://pcapi-xiaotuxian-front-devtest.itheima.net/
// 备用接口地址2: http://apipc-xiaotuxian-front.itheima.net/
const instance = axios.create({
  // 请求基地址
  baseURL,
  // baseURL: 'http://apipc-xiaotuxian-front.itheima.net/',
  // 最长等待时间，如果超过了这个时间，就报错
  timeout: 5000
})

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // 补充token
    const userInfo = user()
    const token = userInfo.profile.token
    if(token) {
      // 添加到请求头
      console.log(token)
      // config.headers!  : 告诉ts，config中一定有headers
      config.headers!.Authorization = `Bearer ${token}`
    }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    return response
  },
  function (error: AxiosError<{message: string}>) {
    // 只要本次请求的状态码不是2XX，都是“错误”
    console.log('添加响应拦截器', error)

    // 网络请求失败
    if(!error.response?.data){
      alert('网络错误')
    } else {
      alert(error.response?.data.message)
    }

    // if(error.response?.data.message)
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

export default instance